<?php

/**
 * Classe représentant une actions de communication.
 * @author LESAGE Alexandre
 * @since 1 aôut 2013
 * @version 1.0
 */


class ActionDeCommunication
{

	/* Attributs */
	/**
	 * Identifiant de l'actions de communication.
	 * @var int
	 */
	private $_id;
	/**
	 * ID du theme de l'actions de communication.
	 * @var int
	 */
	private $_id_theme;
	/**
	 * Titre de l'actions de communication.
	 * @var string
	 */
	private $_titre;

	/**
	 * Date du déroulement de l'action de communication.
	 * @var string
	 */
	private $_date_deroulement;

	/**
	 * Date limite d'inscription à l'action de communication.
	 * @var string
	 */
	private $_date_limite;

	/**
	 * Identifiant et login de l'enseignant suiveur.
	 * @var String
	 */
	private $_id_enseignant;

	/**
	 * Note maximum pour l'action
	 * @var float
	 */
	private $_note_max;

	/**
	 * Commentaire sur l'actions de communication.
	 * @var string
	 */
	private $_commentaire;

	/**
	 * Identifiant de l'état de l'actions de communication.
	 * @var int
	 */
	private $_id_etat;

	/**
	 * id des etudiants participants
	 * @var $_id_etudiant
	 */
	private $_id_etudiants;

	/**
	 * Nombre d'étudiant maximum.
	 * @var int
	 */
	private $_nb_Etudiant_Max;

	/**
	 * Permet de savoir si on peut rattacher des forum à l'action de communication.
	 * @var int
	 */
	private $_groupableForum;
		/* Constructeurs & Destructeurs */

	public function __construct()
	{
		$args = func_get_args();

		switch(func_num_args())
		{
			case 1 : // juste l'id de l'action.
				$this->set_id($args[0]);
				break;
			case 4 : // ID_THEME, TITRE, COMMENTAIRE, GROUPABLE
				$this->set_id_theme($args[0]);
				$this->set_titre($args[1]);
				$this->set_commentaire($args[2]);
				$this->set_groupableForum($args[3]);
				break;
			case 5 : //  ID_ADC, ID_THEME, TITRE, COMMENTAIRE, GROUPABLE
				$this->set_id($args[0]);
				$this->set_id_theme($args[1]);
				$this->set_titre($args[2]);
				$this->set_commentaire($args[3]);
				$this->set_groupableForum($args[4]);
				break;
			case 10 : // ID_THEME, TITRE, DATE, DATE_LIMITE_ADC,  ENSEIGNANT, COMMENTAIRE, ID_ETAT, NOTE_MAX, NB_ETUDIANT_MAX, GROUPABLE
				$this->set_id_theme($args[0]);
				$this->set_titre($args[1]);
				$this->set_date_deroulement($args[2]);
				$this->set_date_limite($args[3]);
				$this->set_login_enseignant($args[4]);
				$this->set_commentaire($args[5]);
				$this->set_id_etat($args[6]);
				$this->set_note_max($args[7]);
				$this->set_nb_Etudiant_Max($args[8]);
				$this->set_groupableForum($args[9]);
				break;
			case 11: // ID_ADC, ID_THEME, TITRE, DATE, DATE_LIMITE_ADC, ENSEIGNANT, COMMENTAIRE, ID_ETAT, NOTE_MAX, NB_ETUDIANT_MAX, GROUPABLE
				$this->set_id($args[0]);
				$this->set_id_theme($args[1]);
				$this->set_titre($args[2]);
				$this->set_date_deroulement($args[3]);
				$this->set_date_limite($args[4]);
				$this->set_login_enseignant($args[5]);
				$this->set_commentaire($args[6]);
				$this->set_id_etat($args[7]);
				$this->set_note_max($args[8]);
				$this->set_nb_Etudiant_Max($args[9]);
				$this->set_groupableForum($args[10]);
				break;
			default:
				trigger_error('Constructeur de Action de communication avec ' + func_num_args() + ' non défini.');
				break;
		}

	}



	/* Méthodes */
	/**
	 * Fonction permettant d'écrire un date de la forme JJ-MM-AAAA en AAAA-MM-JJ.
	 * @param string $date
	 * @return string
	 */
	private function putDateAAAAMMJJ($date)
	{
		$d = preg_split("-/-", $date);
		return $d[2]."-".$d[1]."-".$d[0];
	}

	/**
	 * Fonction permettant d'écrire un date de la forme AAAA-MM-JJ en JJ-MM-AAAA.
	 * @param string $date
	 * @return string
	 */
	private function putDateJJMMAAAA($date)
	{
		$d = preg_split("-/-", $date);
		return $d[0]."-".$d[1]."-".$d[2];
	}

	/**
	 * Verifie si une date est correcte.
	 * @param string $date
	 * @return boolean
	 */
	private function verifieDate($date)
	{
		$d = preg_split("-/-", $date);

		if(($d[1] > 0 && $d[1] <= 12) && ($d[0] > 0 && $d[0] <= 31) && ($d[2] > 0))
			return true;
		else
			return false;
	}

	/* Méthode Base de Données */

	/**
	 * Méthode static permettant de récupérer, dans les paramètres, le nombre maximum d'étudiants possibles aux actions de communication
	 * @return $int
	 */
	public static function getNbMaxEtuADC() // récupère le nombre d'étudiant max
	{
		$bdd = PDO2::getInstance();
		$d = $bdd->query(
				'SELECT '.VALEUR_PARAMETRE.'
				FROM '.TABLE_PARAMETRE.'
				WHERE '.LIBELLE_PARAMETRE.' = "Nombre étudiants maximum"');
		$d = $d->fetch();
		return $d[VALEUR_PARAMETRE];
	}
	
	/**
	 * Méthode static permettant de récupérer, dans les paramètres, le nombre de point maximum
	 * @return $int
	 */
	public static function getNoteMax() // récupère le nombre d'étudiant max
	{
		$bdd = PDO2::getInstance();
		$d = $bdd->query(
				'SELECT '.VALEUR_PARAMETRE.'
				FROM '.TABLE_PARAMETRE.'
				WHERE '.LIBELLE_PARAMETRE.' = "Nombre points maximum"');
		$d = $d->fetch();
		return $d[VALEUR_PARAMETRE];
	}
	
	/**
	 * Méthode static permettant de récupérer toutes les actions de communication de la base de données sous forme d'un tableau.
	 * @return $adc Tableau avec toutes les actions de communication de la base de données
	 */
	public static function getADC() // récupère toutes les adc sans filtre.
	{
		$adc = false;

		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(REQ_ALL_ADC.' WHERE '.ETAT_ADC.' <> 5'); // On lance la requête

		$donnees = $donnees->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif

		foreach($donnees as $d)
		{
			$adc[] = new ActionDeCommunication($d[ID_ADC], $d[THEME_ADC], $d[TITRE_ADC], $d[DATE_ADC], $d[DATE_LIMITE_ADC], $d[LOGIN_PROF], $d[COMMENTAIRE_ADC], $d[ETAT_ADC], $d[NOTE_MAX_ADC], $d[NOMBRE_ETUDIANT_ADC], $d[GROUPE_FORUM_ADC]);
		}

		return $adc;
	}

	public static function getAllADCFiltre($filtre)
	{
		$adc = false;

		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		if($filtre == DATE_ADC)
			$donnees = $bdd->query(REQ_ALL_ADC.' WHERE '.ETAT_ADC.' <> 5 ORDER BY YEAR('.$filtre.'), MONTH('.$filtre.'), DAY('.$filtre.')'); // On lance la requête
		else
			$donnees = $bdd->query(REQ_ALL_ADC.' WHERE '.ETAT_ADC.' <> 5 ORDER BY '.$filtre); // On lance la requête

		$donnees = $donnees->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif

		foreach($donnees as $d)
		{
			$adc[] = new ActionDeCommunication($d[ID_ADC], $d[THEME_ADC], $d[TITRE_ADC], $d[DATE_ADC], $d[DATE_LIMITE_ADC], $d[LOGIN_PROF], $d[COMMENTAIRE_ADC], $d[ETAT_ADC], $d[NOTE_MAX_ADC], $d[NOMBRE_ETUDIANT_ADC], $d[GROUPE_FORUM_ADC]);
		}
		
		return $adc;
	}

	public static function getAllADCGroupable()
	{
		$adc = false;
		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(REQ_ALL_ADC.' WHERE '.GROUPE_FORUM_ADC.' = 1 OR '.TITRE_ADC.' = "'.LUNDI.'"');
		$donnees = $donnees->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif
		foreach($donnees as $d)
		{
			$adc[] = new ActionDeCommunication($d[ID_ADC], $d[THEME_ADC], $d[TITRE_ADC], $d[COMMENTAIRE_ADC], $d[GROUPE_FORUM_ADC]);
		}

		return $adc;
	}


	public function getOneADC()
	{
		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		$d= $bdd->query(REQ_ALL_ADC.'
						 WHERE '.ID_ADC.' = \''.$this->get_id().'\''); // On lance la requête

		$d = $d->fetch();
		$this->set_id_theme($d[THEME_ADC]);
		$this->set_titre($d[TITRE_ADC]);
		$this->set_date_deroulement($d[DATE_ADC]);
		$this->set_date_limite($d[DATE_LIMITE_ADC]);
		$this->set_login_enseignant($d[LOGIN_PROF_ADC]);
		$this->set_commentaire($d[COMMENTAIRE_ADC]);
		$this->set_id_etat($d[ETAT_ADC]);
		$this->set_note_max($d[NOTE_MAX_ADC]);
		$this->set_nb_Etudiant_Max($d[NOMBRE_ETUDIANT_ADC]);
		$this->set_groupableForum($d[GROUPE_FORUM_ADC]);

		$don= $bdd->query('SELECT E.'.ID_ETU.'
										FROM '.TABLE_ETUDIANT.' E
											JOIN '.TABLE_ETUDIANT_PROMO.' EP ON E.'.ID_ETU.' = EP.'.ETU_ID_PROMO.'
											JOIN '.TABLE_PARTICIPE.' P ON E.'.ID_ETU.'= P.'.ID_ETU_PARTICIPE.'
										WHERE P.'.ID_ADC_PARTICIPE.' = \''.$this->get_id().'\'');
		$don = $don->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif

		foreach($don as $d)
		{
			$_id_etudiants[] = $d[ID_ETU];
		}

	}
	
	public function getOneADCFromArchive()
	{
		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		$d= $bdd->query('SELECT ADC.'.ID_ADC.', '.TITRE_ADC.', DATE_FORMAT('.DATE_ADC.',\'%d/%m/%Y\') AS "'.DATE_ADC.'" , DATE_FORMAT('.DATE_LIMITE_ADC.',\'%d/%m/%Y\') AS "'.DATE_LIMITE_ADC.'" , '.COMMENTAIRE_ADC.',  '.NOMBRE_ETUDIANT_ADC.', '.THEME_ADC.', '.GROUPE_FORUM_ADC.', '.NOM_PROF.', '.PRENOM_PROF.', P.'.LOGIN_PROF.'
								FROM '.TABLE_ADC.'_archive ADC
									LEFT JOIN '.TABLE_PROF.'_archive P ON ADC.'.LOGIN_PROF_ADC.' = P.'.LOGIN_PROF.'
						 WHERE '.ID_ADC.' = \''.$this->get_id().'\''); // On lance la requête
		$d = $d->fetch();
		$this->set_id_theme($d[THEME_ADC]);
		$this->set_titre($d[TITRE_ADC]);
		$this->set_date_deroulement($d[DATE_ADC]);
		$this->set_date_limite($d[DATE_LIMITE_ADC]);
		$this->set_login_enseignant($d[LOGIN_PROF_ADC]);
		$this->set_commentaire($d[COMMENTAIRE_ADC]);
		$this->set_nb_Etudiant_Max($d[NOMBRE_ETUDIANT_ADC]);
		$this->set_groupableForum($d[GROUPE_FORUM_ADC]);

		$don= $bdd->query('SELECT E.'.ID_ETU.'
										FROM '.TABLE_ETUDIANT.'_archive E
											JOIN '.TABLE_ETUDIANT_PROMO.'_archive EP ON E.'.ID_ETU.' = EP.'.ETU_ID_PROMO.'
											JOIN '.TABLE_PARTICIPE.'_archive P ON E.'.ID_ETU.'= P.'.ID_ETU_PARTICIPE.'
										WHERE P.'.ID_ADC_PARTICIPE.' = \''.$this->get_id().'\'');
		$don = $don->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif

		foreach($don as $d)
		{
			$_id_etudiants[] = $d[ID_ETU];
		}

	}

	public static function getUserADCSFiltre($id)//getUserADC sans filtre
	{
		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		if($_SESSION['user'] == "etu")
		{
			$donnees = $bdd->query(	REQ_ALL_ADC.'
										WHERE ADC.'.ID_ADC.' IN (SELECT '.ID_ADC_PARTICIPE.'
															FROM '.TABLE_PARTICIPE.'
															WHERE '.ID_ETU_PARTICIPE.' = '.$id.')');
		}
		else
		{
			$donnees = $bdd->query(	REQ_ALL_ADC.'
										WHERE ADC.'.LOGIN_PROF_ADC.' = \''.$id);
		}

		$adc = false;

		while($d = $donnees->fetch())
		{
			$adc[] = new ActionDeCommunication($d[ID_ADC], $d[THEME_ADC], $d[TITRE_ADC], $d[DATE_ADC], $d[DATE_LIMITE_ADC], $d[LOGIN_PROF], $d[COMMENTAIRE_ADC], $d[ETAT_ADC], $d[NOTE_MAX_ADC], $d[NOMBRE_ETUDIANT_ADC], $d[GROUPE_FORUM_ADC]);
		}

		return $adc;
	}

	public static function getUserADC($id,$filtre)
	{
		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		if($_SESSION['user'] == "etu")
		{
			if($filtre == DATE_ADC)
				$donnees = $bdd->query(	REQ_ALL_ADC.'
										WHERE ADC.'.ID_ADC.' IN (SELECT '.ID_ADC_PARTICIPE.'
															FROM '.TABLE_PARTICIPE.'
															WHERE '.ID_ETU_PARTICIPE.' = '.$id.')
										AND '.GROUPE_FORUM_ADC.' = 0
										ORDER BY YEAR('.$filtre.'), MONTH('.$filtre.'), DAY('.$filtre.')');
			else
				$donnees = $bdd->query(	REQ_ALL_ADC.'
										WHERE ADC.'.ID_ADC.' IN (SELECT '.ID_ADC_PARTICIPE.'
															FROM '.TABLE_PARTICIPE.'
															WHERE '.ID_ETU_PARTICIPE.' = '.$id.')
										AND '.GROUPE_FORUM_ADC.' = 0
										ORDER BY '.$filtre);

		}
		else
		{
			if($filtre == DATE_ADC)
				$donnees = $bdd->query(	REQ_ALL_ADC.'
										WHERE ADC.'.LOGIN_PROF_ADC.' = \''.$id.'\'
										ORDER BY YEAR('.$filtre.'), MONTH('.$filtre.'), DAY('.$filtre.')');
			else
				$donnees = $bdd->query(	REQ_ALL_ADC.'
										WHERE ADC.'.LOGIN_PROF_ADC.' = \''.$id.'\'
										ORDER BY '.$filtre);
		}

		$adc = false;

		while($d = $donnees->fetch())
		{
				$adc[] = new ActionDeCommunication($d[ID_ADC], $d[THEME_ADC], $d[TITRE_ADC], $d[DATE_ADC], $d[DATE_LIMITE_ADC], $d[LOGIN_PROF], $d[COMMENTAIRE_ADC], $d[ETAT_ADC], $d[NOTE_MAX_ADC], $d[NOMBRE_ETUDIANT_ADC], $d[GROUPE_FORUM_ADC]);
		}

		return $adc;
	}

	public function saveOneADC()
	{
		if($this->get_login_enseignant() == null)
			$login = "null";
		else
			$login = '"'.$this->get_login_enseignant().'"';

		if($this->get_date_deroulement() == null)
			$dateD = "null";
		else
			$dateD = '"'.$this->putDateAAAAMMJJ($this->get_date_deroulement()).'"';
		
		if($this->get_date_limite() == null)
			$dateL = $dateD;
		else
			$dateL = '"'.$this->putDateAAAAMMJJ($this->get_date_limite()).'"';

		if($this->get_note_max() == null)
			$note = "null";
		else
			$note = '"'.$this->get_note_max().'"';

		if($this->get_commentaire() == null)
			$commentaire = "null";
		else
			$commentaire = '"'.$this->get_commentaire().'"';
		
		if($this->get_nb_Etudiant_Max() == null)
			$nbEtu = "null";
		else
			$nbEtu = '"'.$this->get_nb_Etudiant_Max().'"';


		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		if ($this->get_groupableForum() == true)
		{
			$result= $bdd->exec(
					'INSERT INTO '.TABLE_ADC.' ('.TITRE_ADC.', '.COMMENTAIRE_ADC.', '.CODE_THEME.', '.CODE_ETAT.', '.GROUPE_FORUM_ADC.')
	 	            VALUES ("'.$this->get_titre().'", '.$commentaire.','.$this->get_id_theme().', 1, 1)'
			); // On lance la requête
		}
		else
		{
			$result= $bdd->exec(
					'INSERT INTO '.TABLE_ADC.' ('.TITRE_ADC.', '.COMMENTAIRE_ADC.', '.DATE_ADC.', '.DATE_LIMITE_ADC.', '.NOTE_MAX_ADC.', '.NOMBRE_ETUDIANT_ADC.', '.LOGIN_PROF_ADC.', '.CODE_THEME.', '.CODE_ETAT.', '.GROUPE_FORUM_ADC.')
					VALUES ("'.$this->get_titre().'", '.$commentaire.', '.$dateD.', '.$dateL.', '.$note.', '.$nbEtu.', '.$login.', '.$this->get_id_theme().', '.$this->get_id_etat().', 0)'
			); // On lance la requête
		}
	}

	public function modifOneADC()
	{
	if($this->get_login_enseignant() == null)
			$login = "null";
		else
			$login = '"'.$this->get_login_enseignant().'"';

		if($this->get_date_deroulement() == null)
			$dateD = "null";
		else
			$dateD = '"'.$this->putDateAAAAMMJJ($this->get_date_deroulement()).'"';

		if($this->get_date_limite()==null)
			$dateL = $dateD;
		else
			$dateL = '"'.$this->putDateAAAAMMJJ($this->get_date_limite()).'"';

		if($this->get_note_max() == null)
			$note = "null";
		else
			$note = '"'.$this->get_note_max().'"';

		if($this->get_commentaire() == null)
			$commentaire = "null";
		else
			$commentaire = '"'.$this->get_commentaire().'"';

		if ($this->get_groupableForum() == true)
		{
			$bdd = PDO2::getInstance();
			$result = $bdd->exec(
				'UPDATE '.TABLE_ADC.'
					SET '.TITRE_ADC.' = "'.$this->get_titre().'", '.COMMENTAIRE_ADC.' = '.$commentaire.', '.CODE_THEME.' = '.$this->get_id_theme().', '.CODE_ETAT.' = 1
				WHERE '.ID_ADC.' = '.$this->get_id());
		}
		else
		{
			$bdd = PDO2::getInstance();
			$result= $bdd->exec(
					'UPDATE '.TABLE_ADC.'
					SET '.TITRE_ADC.' = "'.$this->get_titre().'", '.COMMENTAIRE_ADC.' = '.$commentaire.', '.DATE_ADC.' = '.$dateD.', '.DATE_LIMITE_ADC.' = '.$dateL.', '.NOTE_MAX_ADC.'='.$note.', '.NOMBRE_ETUDIANT_ADC.' = '.$this->get_nb_Etudiant_Max().', '.CODE_THEME.' = '.$this->get_id_theme().', '.LOGIN_PROF_ADC.' = '.$login.', '.CODE_ETAT.' = 1
					WHERE '.ID_ADC.' = '.$this->get_id());
		}

		if($result == 0)
			return false;
		else
			return true;
	}

	public function delOneADC()
	{
		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		$result= $bdd->exec(
						'DELETE FROM '.TABLE_PARTICIPE.'
										WHERE '.ID_ADC.' = '.$this->get_id().';
										DELETE FROM '.TABLE_ADC.'
										WHERE '.ID_ADC.' = '.$this->get_id());
		if ($this->get_groupableForum() == true)
		{
			// On se connecte  à la BDD
			$bdd = PDO2::getInstance();
			$result= $bdd->exec(
					'DELETE FROM '.TABLE_FORUM.'
							WHERE '.ID_ADC_FORUM.' = '.$this->get_id().';
					DELETE FROM '.TABLE_ADC.'
							WHERE '.ID_ADC.' = '.$this->get_id());
		}
		elseif ($this->get_titre()== LUNDI)
		{
			$bdd = PDO2::getInstance();
			$result= $bdd->exec(
					'DELETE FROM '.TABLE_PARTICIPE.'
					WHERE '.ID_ADC.' = '.$this->get_id().';
					DELETE FROM '.TABLE_FORUM.'
					WHERE '.ID_ADC_FORUM.' = '.$this->get_id().';
					DELETE FROM '.TABLE_ADC.'
					WHERE '.ID_ADC.' = '.$this->get_id());
		}

		if($result == 0)
			return false;
		else
			return true;
	}

	/**
	 * Enregistre une note d'un étudiant donné
	 * @param $idEtu
	 * @param $note
	 */
	function noter($idEtu, $note)
	{
		$bdd = PDO2::getInstance();
		$result= $bdd->exec(
				'UPDATE '.TABLE_PARTICIPE.'
				SET '.NOTE_PARTICIPE.' = '.$note.'
				WHERE '.ID_ETU.' = '.$idEtu.' AND '.ID_ADC.' = '.$this->get_id());

		if($result == 0)
			return false;
		else
			return true;
	}

	function get_note_etu($idEtu)
	{
		$bdd = PDO2::getInstance();
		$donnees= $bdd->query(
				'SELECT '.NOTE_PARTICIPE.
				' FROM '.TABLE_PARTICIPE.
				' WHERE '.ID_ETU_PARTICIPE.' = '.$idEtu.
				' AND '.ID_ADC_PARTICIPE.' = '.$this->get_id()
		);
		$don =$donnees->fetch();
		return $don[NOTE_PARTICIPE];
	}

	public function addEnseignant($loginProf)
	{
		$donnees = true;

		$this->set_login_enseignant($loginProf);

		//Mise à jour de la BDD
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(	'
				UPDATE '.TABLE_ADC.'
				SET '.LOGIN_PROF_FORUM.' = \''.$loginProf.'\'
				WHERE '.ID_ADC.' = '.$this->get_id().'
				');

		if(!$donnees) // Si la requête à rencontrer des problèmes...
			$_SESSION['message'] = 'Un problème est survenu lors de l\'inscription';
		else
			$_SESSION['message'] = 'Vous avez bien été inscrit à l\'action de communication !';
	}

	/**
	 * Permet de vérifier le formulaire de création et modification d'une adc
	 * @return boolean
	 */
	public function checkCreationADC()
	{
		$_SESSION['message'] = "";
		$retour = true;

		if($this->get_groupableForum() == 0)
		{
			if($this->get_date_deroulement() != null) // verifie le format de la date
			{
				if(!preg_match("!^(0?\d|[12]\d|3[01])/(0?\d|1[012])/((?:19|20)\d{2})$!", $this->get_date_deroulement()))
				{
					$_SESSION['message'] .= "<br/>Format de la date de déroulement incorrecte elle doit être de la forme jj/mm/aaaa.";
					$retour = false;
				}
			}
			
			if($this->get_date_limite() != null) // verifie le format de la date limite
			{
				if(!preg_match("!^(0?\d|[12]\d|3[01])/(0?\d|1[012])/((?:19|20)\d{2})$!", $this->get_date_limite()))
				{
					$_SESSION['message'] .= "<br/>Format de la date limite incorrecte elle doit être de la forme jj/mm/aaaa.";
					$retour = false;
				}
			}
		
			if($this->get_id_theme() == null || $this->get_titre() == null || $this->get_nb_Etudiant_Max() == null)
			{
				$_SESSION['message'] .= "<br/>Vous devez remplir tout les champs obligatoires.";
				return false;
			}
			else
			{
				if($this->get_date_deroulement() != null)
				{					
					$dD = substr($this->get_date_deroulement(), 0,2);
					$mD = substr($this->get_date_deroulement(), 3,2);
					$yD = substr($this->get_date_deroulement(), 6,4);
					$dateJour = date("d/m/Y");
					$dJ = substr($dateJour, 0,2);
					$mJ = substr($dateJour, 3,2);
					$yJ = substr($dateJour, 6,4);
					if( ($yJ > $yD) || ($yJ == $yD && $mJ > $mD) || ($yJ == $yD && $mJ == $mD && $dJ > $dD))
					{
						$_SESSION['message'] .= "<br/>La date de déroulement doit être supérieur à celle du jour.";
						$retour = false;
					}
						
					if($this->get_date_limite() != null)
					{
						$dL = substr($this->get_date_limite(), 0,2);
						$mL = substr($this->get_date_limite(), 3,2);
						$yL = substr($this->get_date_limite(), 6,4);
						if( ($yJ > $yL) || ($yJ == $yL && $mJ > $mL) || ($yJ == $yL && $mJ == $mL && $dJ > $dL))
						{
							$_SESSION['message'] .= "<br/>La date limite entrée doit être supérieur à celle du jour.";
							$retour = false;
						}
						if( ($yL > $yD) || ($yL == $yD && $mL > $mD) || ($yL == $yD && $mL == $mD && $dL > $dD))
						{
							$_SESSION['message'] .= "<br/>La date limite entrée doit être antérieure à la date de déroulement.";
							$retour = false;
						}
					}
					
				}
				if($this->get_nb_Etudiant_Max() <= 0)
				{
					$_SESSION['message'] .= "<br/>Le nombre d'étudiant maximum doit être supérieur à 0.";
					$retour = false;
				}
				if($this->get_nb_Etudiant_Max() > ActionDeCommunication::getNbMaxEtuADC())
				{
					$_SESSION['message'] .= "<br/>Le nombre d'étudiant maximum doit être inférieur ou égale à ".ActionDeCommunication::getNbMaxEtuADC();
					$retour = false;
				}
				if($this->get_note_max() != null && $this->get_note_max() < 0)
				{
					$_SESSION['message'] .= "<br/>La note maximum doit être supérieur à 0.";
					$retour = false;
				}
				if($this->get_date_limite() != null && $this->get_date_deroulement() == null)
				{
					$_SESSION['message'] .= "<br/>Vous devez entrez une date de déroulement pour indiquer une date limite.";
					$retour = false;
				}
				return $retour;
			}
		}
		elseif($this->get_groupableForum() == 1)
		{
			if($this->get_id_theme() == null || $this->get_titre() == null)
			{
				$_SESSION['message'] .= "<br/>Vous devez indiquer un titre.";
				return false;
			}
			else
				return true;
		}

	}
	
	public function checkPropositionADC()
	{
		$_SESSION['message'] = "";
		$retour = true;
		
		if($this->get_date_deroulement() != null)
		{
			if(!preg_match("#^(0?\d|[12]\d|3[01])/(0?\d|1[012])/((?:19|20)\d{2})$#", $this->get_date_deroulement()))
			{
				$_SESSION['message'] .= "<br/>Format de la date de déroulement incorrecte elle doit être de la forme jj/mm/aaaa.";
				$retour = false;
			}
		}
		
		if($this->get_id_theme() == null || $this->get_titre() == null || $this->get_commentaire() == null)
		{
			$_SESSION['message'] .= "<br/>Vous devez remplir tout les champs obligatoires.";
			return false;
		}
		else
		{
			if($this->get_date_deroulement() != null)
			{
				$date = date("d/m/Y");
				if($this->get_date_deroulement() < $date)
				{
					$_SESSION['message'] .= "<br/>La date de déroulement doit être supérieur à celle du jour.";
					$retour = false;
				}
			}
			if($this->get_nb_Etudiant_Max() != null && $this->get_nb_Etudiant_Max() <= 0)
			{
				$_SESSION['message'] .= "<br/>Le nombre d'étudiant maximum doit être supérieur à 0.";
				$retour = false;
			}
			if($this->get_nb_Etudiant_Max() >= 7)
			{
				$_SESSION['message'] .= "<br/>Le nombre d'étudiant maximum doit être inférieur à 7.";
				$retour = false;
			}
			
			return $retour;
		}
	}

	public function getNbEtuNoteADC()
	{
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(
				' SELECT DISTINCT COUNT('.ID_ETU_PARTICIPE.') AS nb
				FROM '.TABLE_PARTICIPE.'
				WHERE '.ID_ADC_PARTICIPE.' = '.$this->get_id().'
				AND '.NOTE_PARTICIPE.' IS NOT NULL'
		);
		$don = $donnees->fetch();
		return $don["nb"];

	}

	/*Méthode tableau de bord*/


	/**
	 * Méthode static permettant de récupérer toutes les actions de communication non groupable selon la date.
	 * @param $date
	 * @return $adc Tableau avec toutes les actions de communication de la base de données
	 */
	public static function getAllADCDate($date)
	{
		$adc = false;

		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();

		if($date != 0)
			$donnees = $bdd->query(REQ_ALL_ADC.'
								WHERE '.DATE_ADC.' <= "'.$date.'"
								AND '.ETAT_ADC.' <> 4
								AND '.ETAT_ADC.' <> 5
								ORDER BY YEAR('.DATE_ADC.'), MONTH('.DATE_ADC.'), DAY('.DATE_ADC.')'); // On lance la requête
		else
			$donnees = $bdd->query(REQ_ALL_ADC.'
									WHERE '.DATE_ADC.' <= ADDDATE(NOW(),30)
									AND '.ETAT_ADC.' <> 4				
									AND '.ETAT_ADC.' <> 5
									ORDER BY YEAR('.DATE_ADC.'), MONTH('.DATE_ADC.'), DAY('.DATE_ADC.')'); // On lance la requête

		$donnees = $donnees->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif

		foreach($donnees as $d)
		{
			$adc[] = new ActionDeCommunication($d[ID_ADC], $d[THEME_ADC], $d[TITRE_ADC], $d[DATE_ADC], $d[DATE_LIMITE_ADC], $d[LOGIN_PROF], $d[COMMENTAIRE_ADC], $d[ETAT_ADC], $d[NOTE_MAX_ADC], $d[NOMBRE_ETUDIANT_ADC], $d[GROUPE_FORUM_ADC]);
		}

		return $adc;
	}

	/**
	 * Méthode static permettant de récupérer toutes les actions de communication non groupable de la base de données.
	 * @return $adc Tableau avec toutes les actions de communication de la base de données
	 */
	public static function getAllADC($filtre)
	{
		$adc= array();
		$bdd = PDO2::getInstance();

		if($filtre == DATE_ADC)
			$donnees = $bdd->query(REQ_ALL_ADC.'
									WHERE '.GROUPE_FORUM_ADC.' = 0
									AND '.ETAT_ADC.' <> 5
									ORDER BY YEAR('.$filtre.'), MONTH('.$filtre.'), DAY('.$filtre.')');
		else
			$donnees = $bdd->query(REQ_ALL_ADC.'
									WHERE '.GROUPE_FORUM_ADC.' = 0
									AND '.ETAT_ADC.' <> 5
									ORDER BY '.$filtre);

		$donnees = $donnees->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif

		foreach($donnees as $d)
		{
			$adc[] = new ActionDeCommunication($d[ID_ADC], $d[THEME_ADC], $d[TITRE_ADC], $d[DATE_ADC], $d[DATE_LIMITE_ADC], $d[LOGIN_PROF], $d[COMMENTAIRE_ADC], $d[ETAT_ADC], $d[NOTE_MAX_ADC], $d[NOMBRE_ETUDIANT_ADC], $d[GROUPE_FORUM_ADC]);
		}

		return $adc;
	}

	/**
	 * Méthode static permettant de récupérer toutes les actions de communication de la base de données selon leur état.
	 * @param $idetat
	 * @return $adc Tableau avec toutes les actions de communication de la base de données
	 */
	public static function getAllADCEtat($idetat,$filtre)
	{
		$adc= array();
		$bdd = PDO2::getInstance();

		if($filtre == DATE_ADC)
			$donnees = $bdd->query(REQ_ALL_ADC.'
									WHERE '.GROUPE_FORUM_ADC.' = 0
									AND '.ETAT_ADC.' = '.$idetat.'
									ORDER BY YEAR('.$filtre.'), MONTH('.$filtre.'), DAY('.$filtre.')');
		else
			$donnees = $bdd->query(REQ_ALL_ADC.'
									WHERE '.GROUPE_FORUM_ADC.' = 0
									AND '.ETAT_ADC.' = '.$idetat.'
									ORDER BY '.$filtre);

		$donnees = $donnees->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif

		foreach($donnees as $d)
		{
			$adc[] = new ActionDeCommunication($d[ID_ADC], $d[THEME_ADC], $d[TITRE_ADC], $d[DATE_ADC], $d[DATE_LIMITE_ADC], $d[LOGIN_PROF], $d[COMMENTAIRE_ADC], $d[ETAT_ADC], $d[NOTE_MAX_ADC], $d[NOMBRE_ETUDIANT_ADC], $d[GROUPE_FORUM_ADC]);
		}

		return $adc;
	}

	/**
	 * Méthode static permettant de récupérer toutes les actions de communication incomplètes.
	 * @return $adc Tableau avec toutes les actions de communication de la base de données
	 */
	public static function getAllADCIncompletes($filtre)
	{
		$adc= array();
		$bdd = PDO2::getInstance();

		if($filtre == DATE_ADC)
			$donnees = $bdd->query(REQ_ALL_ADC.'
									WHERE '.GROUPE_FORUM_ADC.' = 0
									AND '.ETAT_ADC.' <> 5
									AND ('.DATE_ADC.' IS NULL
									OR '.NOTE_MAX_ADC.' IS NULL
									OR ADC.'.LOGIN_PROF_ADC.' IS NULL)
									ORDER BY YEAR('.$filtre.'), MONTH('.$filtre.'), DAY('.$filtre.')');
		else
			$donnees = $bdd->query(REQ_ALL_ADC.'
									WHERE '.GROUPE_FORUM_ADC.' = 0
									AND '.ETAT_ADC.' <> 5
									AND ('.DATE_ADC.' IS NULL
									OR '.NOTE_MAX_ADC.' IS NULL
									OR ADC.'.LOGIN_PROF_ADC.' IS NULL)
									ORDER BY '.$filtre);

		$donnees = $donnees->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif

		foreach($donnees as $d)
		{
			$adc[] = new ActionDeCommunication($d[ID_ADC], $d[THEME_ADC], $d[TITRE_ADC], $d[DATE_ADC], $d[DATE_LIMITE_ADC], $d[LOGIN_PROF], $d[COMMENTAIRE_ADC], $d[ETAT_ADC], $d[NOTE_MAX_ADC], $d[NOMBRE_ETUDIANT_ADC], $d[GROUPE_FORUM_ADC]);
		}

		return $adc;
	}

	/**
	 * Méthode static permettant de récupérer toutes les actions de communication à noter.
	 * @return $adc Tableau avec toutes les actions de communication de la base de données
	 */
	public static function getAllADCANoter($filtre)
	{
		$adc= array();
		$bdd = PDO2::getInstance();

		if($filtre == DATE_ADC)
			$donnees = $bdd->query(REQ_ALL_ADC.'
										JOIN '.TABLE_PARTICIPE.' PA ON ADC.'.ID_ADC.' = PA.'.ID_ADC_PARTICIPE.'
									WHERE '.GROUPE_FORUM_ADC.' = 0
									AND '.ETAT_ADC.' = 4
									AND '.NOTE_PARTICIPE.' = NULL
									ORDER BY YEAR('.$filtre.'), MONTH('.$filtre.'), DAY('.$filtre.')');
		else
			$donnees = $bdd->query(REQ_ALL_ADC.'
										JOIN '.TABLE_PARTICIPE.' PA ON ADC.'.ID_ADC.' = PA.'.ID_ADC_PARTICIPE.'
									WHERE '.GROUPE_FORUM_ADC.' = 0
									AND '.ETAT_ADC.' = 4
									AND '.NOTE_PARTICIPE.' = NULL
									ORDER BY '.$filtre);

		$donnees = $donnees->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif

		foreach($donnees as $d)
		{
			$adc[] = new ActionDeCommunication($d[ID_ADC], $d[THEME_ADC], $d[TITRE_ADC], $d[DATE_ADC], $d[DATE_LIMITE_ADC], $d[LOGIN_PROF], $d[COMMENTAIRE_ADC], $d[ETAT_ADC], $d[NOTE_MAX_ADC], $d[NOMBRE_ETUDIANT_ADC], $d[GROUPE_FORUM_ADC]);
		}

		return $adc;
	}

	public function get_code()
	{
		$bdd = PDO2::getInstance();

		$numero = $bdd->query(	'
									SELECT COUNT( * )
									FROM '.TABLE_ADC.'
									WHERE '.CODE_THEME.' = '.$this->get_theme()->get_id().'
									AND '.ID_ADC.' <= '.$this->get_id().'
									ORDER BY '.ID_ADC.' ASC
								');

		$numero = $numero->fetch();
		switch($this->get_theme()->get_libelle())
		{
			case 'FORUM':
				return 'A'.$numero[0];
				break;
			case 'DPT INFO':
				return 'B'.$numero[0];
				break;
			case 'BDE ODIN':
				return 'C'.$numero[0];
				break;
			default:
				return 'err';
				break;
		}
	}

	/* Getteurs & Setteurs */

	/**
	 * Fonction permettant de récupérer l'identifiant de l'action de communication.
	 * @access public
	 * @return int $_id
	 */
	public function get_id()
	{
		return $this->_id;
	}

	/**
	 * Met à jour l'id de l'action de communication
	 * @access public
	 * @param int $id Le nouveau identifiant de l'action de communication
	 */
	public function set_id($id)
	{
		$this->_id = $id;
	}

	/**
	 * Fonction permettant de récupérer le theme de l'action de communication.
	 * @access public
	 * @return Theme
	 */
	public function get_theme()
	{
		$t = new Theme($this->get_id_theme());
		$t->getOneTheme();
		return $t;
	}

	/**
	 * Fonction permettant de récupérer l'id du theme de l'action de communication.
	 * @access public
	 * @return int $_id_theme
	 */
	public function get_id_theme()
	{
		return $this->_id_theme;
	}

	/**
	 * Met à jour l'id du theme de l'action de communication
	 * @access public
	 * @param int $theme Le nouveau id du theme de l'action de communication.
	 */
	public function set_id_theme($theme)
	{
		$this->_id_theme = $theme;
	}

	/**
	 * Fonction permettant de récupérer le titre de l'action de communication.
	 * @access public
	 * @return string $_titre Le titre de l'action de communicaition.
	 */
	public function get_titre()
	{
		return $this->_titre;
	}

	/**
	 * Met à jour le titre de l'action de communication.
	 * @param string $titre Le nouveau titre de l'action de communication.
	 */
	public function set_titre($titre)
	{
		/*if(empty($titre)) // Si $titre est vide, on afficher un message d'erreur.
			trigger_error('Le nouveau titre de l\'action de communication est vide.');
		else if(is_string($titre)) // Si $titre n'est pas un string, on afficher un message d'erreur.
			trigger_error('Le nouveau titre de l\'action de communication doit être une chaine de caractère !');
		else*/
			$this->_titre = $titre;
	}

	/**
	 * Fonction permettant de récupérer la date du déroulement de l'action de communication.
	 * @access public
	 * @return string $_date_deroulement La date du déroulement de l'action de communication.
	 */
	public function get_date_deroulement()
	{
		return $this->_date_deroulement;
	}

	public function get_date_deroulementAAAA_MM_JJ()
	{
		if($this->get_date_deroulement()!="")
			return $this->putDateAAAAMMJJ($this->get_date_deroulement());
		else
			return "";
	}

	/**
	 * Met à jour la date de déroulement de l'action de communication.
	 * La date sera enregistrer sous la forme AAAA-MM-JJ
	 * @access public
	 * @param string $date La nouvelle date
	 */
	public function set_date_deroulement($date)
	{
		$this->_date_deroulement = $date;
	}

	/**
	 * Fonction permettant de récupérer la date limite d'inscription à l'action de communication.
	 * @access public
	 * @return date
	 */
	public function get_date_limite()
	{
		return $this->_date_limite;
	}

	public function get_date_limiteAAAA_MM_JJ()
	{
		if($this->get_date_limite()!="")
			return $this->putDateAAAAMMJJ($this->get_date_limite());
		else
			return "";
	}

	/**
	 * Met à jour la date limite d'inscription à l'action de communication.
	 * La date sera enregistrer sous la forme AAAA-MM-JJ
	 * @access public
	 * @param date
	 */
	public function set_date_limite($date)
	{
		$this->_date_limite = $date;
	}
	/**
	 * Fonction permettant de récupérer l'enseignant de l'action de communication.
	 * @access public
	 * @return Enseignant
	 */
	public function get_enseignant()
	{
		$e = new Enseignant($this->get_login_enseignant());
		$e->getOneEnseignant();
		return $e;
	}

	/**
	 * Fonction permettant de récupérer le login de l'enseignant de l'action de communication.
	 * @access public
	 * @return int
	 */
	public function get_login_enseignant()
	{
		return $this->_id_enseignant;
	}

	/**
	 * Met à jour l'enseignant de l'action de communication.
	 * @access public
	 * @param int
	 */
	public function set_login_enseignant($enseignant)
	{
		$this->_id_enseignant=$enseignant;
	}

	/**
	 * Fonction permettant de récupérer la note maximum de l'action
	 * @access public
	 * @return float
	 */
	public function get_note_max()
	{
		return $this->_note_max;
	}

	/**
	 * Fonction permettant de modifier la note maximum de l'action
	 * @access public
	 * @param float
	 */
	public function set_note_max($note)
	{
		$this->_note_max=$note;
	}

	/**
	 * Fonction permettant de récupérer le commentaire de l'action de communication.
	 * @access public
	 * @return string
	 */
	public function get_commentaire()
	{
		return $this->_commentaire;
	}

	/**
	 * Met à jour le commentaire de l'action de communication.
	 * @access public
	 * @param string $commentaire Le nouveau commentaire de l'action de communication.
	 */
	public function set_commentaire($commentaire)
	{
// 		if(empty($commentaire)) // Si $commentaire est vide, on afficher un message d'erreur.
// 			trigger_error('Le nouveau commentaire de l\'action de communication est vide.');
// 		else if(is_string($commentaire)) // Si $commentaire n'est pas un string, on afficher un message d'erreur.
// 			trigger_error('Le nouveau commentaire de l\'action de communication doit être une chaine de caractère !');
// 		else
			$this->_commentaire = $commentaire;
	}

	/**
	 * Fonction permettant de récupérer l'etat de l'action de communication.
	 * @access public
	 * @return Etat
	 */
	public function get_etat()
	{
		$e = new Etat($this->get_id_etat());
		$e->getOneEtat();
		return $e;
	}

	/**
	 * Fonction permettant de récupérer l'identifiant de l'état de l'action de communication.
	 * @access public
	 * @return int
	 */
	public function get_id_etat()
	{
		return $this->_id_etat;
	}

	/**
	 * Met à jour l'état de l'action de communication.
	 * @access public
	 * @param int
	 */
	public function set_id_etat($etat)
	{
		$this->_id_etat=$etat;
	}

	/**
	 * Fonction permettant de récupérer les etudiants liés à l'action de communication.
	 * @access public
	 * @return Etudiant
	 */
	public function get_etudiants_ADC()
	{
		$bdd = PDO2::getInstance();
		if($this->get_groupableForum() == true)
		{
			$d= $bdd->query('SELECT DISTINCT E.'.ID_ETU.', '.LOGIN_ETU.', '.NOM_ETU.', '.PRENOM_ETU.', '.MAIL_ETU.', '.ANNEE_ETU_PROMO.', '.TD_ETU_PROMO.'
							FROM '.TABLE_ETUDIANT.' E
								JOIN '.TABLE_ETUDIANT_PROMO.' EP ON E.'.ID_ETU.' = EP.'.ETU_ID_PROMO.'
							WHERE E.'.ID_ETU.' IN (
													SELECT '.ID_ETU1_FORUM.'
													FROM '.TABLE_FORUM.'
													WHERE '.ID_ADC_FORUM.' = '.$this->get_id().'
													)
							OR E.'.ID_ETU.' IN (
													SELECT '.ID_ETU2_FORUM.'
													FROM '.TABLE_FORUM.'
													WHERE '.ID_ADC_FORUM.' = '.$this->get_id().')');
		}
		else
		{
		$d= $bdd->query('SELECT E.'.ID_ETU.', '.LOGIN_ETU.', '.NOM_ETU.', '.PRENOM_ETU.', '.MAIL_ETU.', '.ANNEE_ETU_PROMO.', '.TD_ETU_PROMO.'
										FROM '.TABLE_ETUDIANT.' E
											JOIN '.TABLE_ETUDIANT_PROMO.' EP ON E.'.ID_ETU.' = EP.'.ETU_ID_PROMO.'
											JOIN '.TABLE_PARTICIPE.' P ON E.'.ID_ETU.'= P.'.ID_ETU_PARTICIPE.'
										WHERE P.'.ID_ADC_PARTICIPE.' = \''.$this->get_id().'\'');
		 // On recupére toutes les données sous forme d'un tableau associatif
		}
		if ($d->rowCount()==0)
		{
			$_etudiants=0;
		}
		else
		{
			$d = $d->fetchAll();
			foreach($d as $don)
			{
				$_etudiants[] = new Etudiants($don[ID_ETU], $don[LOGIN_ETU], $don[NOM_ETU], $don[PRENOM_ETU], $don[MAIL_ETU], $don[TD_ETU_PROMO], $don[ANNEE_ETU_PROMO]);
			}
		}
		return $_etudiants;

	}

	public function get_etudiants_ADCFromArchive()
	{
		$bdd = PDO2::getInstance();
		
			$d= $bdd->query('SELECT E.'.ID_ETU.', '.LOGIN_ETU.', '.NOM_ETU.', '.PRENOM_ETU.', '.MAIL_ETU.', '.ANNEE_ETU_PROMO.', '.TD_ETU_PROMO.'
										FROM '.TABLE_ETUDIANT.'_archive E
											JOIN '.TABLE_ETUDIANT_PROMO.'_archive EP ON E.'.ID_ETU.' = EP.'.ETU_ID_PROMO.'
											JOIN '.TABLE_PARTICIPE.'_archive P ON E.'.ID_ETU.'= P.'.ID_ETU_PARTICIPE.'
										WHERE P.'.ID_ADC_PARTICIPE.' = \''.$this->get_id().'\'');
			// On recupére toutes les données sous forme d'un tableau associatif
		
			
		if ($d->rowCount()==0)
		{
			$_etudiants=0;
		}
		else
		{
			$d = $d->fetchAll();
			foreach($d as $don)
			{
				$_etudiants[] = new Etudiants($don[ID_ETU], $don[LOGIN_ETU], $don[NOM_ETU], $don[PRENOM_ETU], $don[MAIL_ETU], $don[TD_ETU_PROMO], $don[ANNEE_ETU_PROMO]);
			}
		}
		return $_etudiants;
	
	}

	/**
	 * Fonction permettant de récupérer les id des étudiant participant à l'action
	 * @access public
	 * @return string
	 */
	public function get_id_etudiants()
	{
		return $this->_id_etudiants;
	}

	/**
	 * Fonction permettant de modifier les id des etudiants participant à l'action
	 * @access public
	 * @param string
	 */
	public function set_id_etudiants($id_etu)
	{
		$this->_id_etudiants=$id_etu;
	}


	/**
	 * Fonction permettant de récupérer le nombre d'étudiant maximum de l'action de communication.
	 * @access public
	 * @return int $_nb_Etudiant_Max Le nombre d'étudiant maximum de l'action de communication.
	 */
	public function get_nb_Etudiant_Max()
	{
		return $this->_nb_Etudiant_Max;
	}

	/**
	 * Met à jour le nombre d'étaudiant maximum de l'action de communication.
	 * @access public
	 * @param int $$nb_Etudiant_Max le nombre d'étudiant maximum de l'action de communication.
	 */
	public function set_nb_Etudiant_Max($nb_Etudiant_Max)
	{
		$this->_nb_Etudiant_Max=$nb_Etudiant_Max;
	}

	/**
	 * Fonction permettant savoir si l'on peut ajouter des forum à l'action de communication.
	 * @access public
	 * @return int
	 */
	public function get_groupableForum()
	{
		return $this->_groupableForum;
	}

	/**
	 * Met à jour GroupableForum.
	 * @access public
	 * @param int
	 */
	public function set_groupableForum($b)
	{
		$this->_groupableForum = $b;
	}
}

?>